package com.lemon.boot.common.base;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lemon.boot.common.web.Result;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author 李猛
 * @datetime 2023/4/15 17:15
 * @description 公共的Service接口
 */
public interface BaseService<P, D> extends IService<P> {
    //添加
    String add(P p);

    //批量添加
    String adds(List<P> pList);

    //根据ID删除
    String del(Long id);

    //根据ID集合批量删除
    String del(Collection<Long> ids);

    //根据ID修改
    String edit(P p);

    //根据集合批量修改
    String edits(List<P> pList);

    //新增或修改
    String addOrEdit(P p);

    //根据ID查询
    P get(Long id);

    //根据ID查询集合
    List<P> get(Collection<Long> ids);

    //Map条件查询分页数据
    Page<P> map(Map<String, Object> map);

    //DTO实体类条件查询
    List<?> list(D d);

    //DTO实体类条件查询分页数据
    Page<?> page(D d);

    //DTO实体类条件查询数据条数
    long count(D d);

    //DTO实体类条件查询数据是否存在
    boolean exist(D d);

    //启用
    String enable(Collection<Long> ids);

    //停用
    String unable(Collection<Long> ids);

    //上传
    Result<?> upload(MultipartFile file);

    //导出
    void export(D d);
}
